<template>
  <div>
    <!-- <div ref="title">{{info.name}}</div> -->
    <div ref="title">{{name}}</div>
    <button @click="change">修改</button>
  </div>
</template>

<script>
import { ref, watch, reactive } from 'vue'
export default {
  setup() {
    const change = () => {
      info.name = '王五'
      name.value = '王五'
    }
    const name = ref('李四')
    const info = reactive({name:'张三', age: '12'})
    // watch有两种用法：
    // 1.watch传入一个getter函数
    // watch(() => info.name, (newValue, oldValue) => {
    //   console.log('newValue:', newValue, 'oldValue:', oldValue)
    // })

    // 2.传入一个响应式对象，reactive对象或者ref对象
    // 情况一：传入ref
    // watch(name, (newValue, oldValue) => {
    //   console.log('newValue:', newValue, 'oldValue:', oldValue)
    // })

    // 情况二： 传入 reactive通过解构将getter中转化为不是响应式的数据
    watch(() => {
      return {...info}
    }, (newValue, oldValue) => {
      console.log('newValue:', newValue, 'oldValue:', oldValue)
    })
    return {
      info,
      change,
      name
    }
  }
}
</script>

<style>

</style>